<!DOCTYPE html>
<!-- saved from url=(0029)chrome-error://chromewebdata/ -->
<html dir="ltr" lang="zh" subframe="">

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

  <meta name="theme-color" content="#fff">
  <meta name="viewport" content="width=device-width, initial-scale=1.0,
                                 maximum-scale=1.0, user-scalable=no">
  <title>global.xgimi.com</title>
  <style>
    /* Copyright 2017 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file. */

    a {
      color: var(--link-color);
    }

    body {
      --background-color: #fff;
      --error-code-color: var(--google-gray-700);
      --google-blue-100: rgb(210, 227, 252);
      --google-blue-300: rgb(138, 180, 248);
      --google-blue-600: rgb(26, 115, 232);
      --google-blue-700: rgb(25, 103, 210);
      --google-gray-100: rgb(241, 243, 244);
      --google-gray-300: rgb(218, 220, 224);
      --google-gray-500: rgb(154, 160, 166);
      --google-gray-50: rgb(248, 249, 250);
      --google-gray-600: rgb(128, 134, 139);
      --google-gray-700: rgb(95, 99, 104);
      --google-gray-800: rgb(60, 64, 67);
      --google-gray-900: rgb(32, 33, 36);
      --heading-color: var(--google-gray-900);
      --link-color: rgb(88, 88, 88);
      --popup-container-background-color: rgba(0, 0, 0, .65);
      --primary-button-fill-color-active: var(--google-blue-700);
      --primary-button-fill-color: var(--google-blue-600);
      --primary-button-text-color: #fff;
      --quiet-background-color: rgb(247, 247, 247);
      --secondary-button-border-color: var(--google-gray-500);
      --secondary-button-fill-color: #fff;
      --secondary-button-hover-border-color: var(--google-gray-600);
      --secondary-button-hover-fill-color: var(--google-gray-50);
      --secondary-button-text-color: var(--google-gray-700);
      --small-link-color: var(--google-gray-700);
      --text-color: var(--google-gray-700);
      --edge-background: var(--edge-grey-background);
      --edge-black: #101010;
      --edge-focus-color: #838383;
      --edge-blue-hover: #0078D4;
      --edge-blue-pressed: #1081D7;
      --edge-blue-rest: #0070C6;
      --edge-blue-selected: #004274;
      --edge-border-hover: #949494;
      --edge-border-pressed: #ADADAD;
      --edge-border-rest: #C5C5C5;
      --edge-grey-background: #F6F6F6;
      --edge-grey-selected: #C6C6C6;
      --edge-light-grey-hover: #F3F3F3;
      --edge-light-grey-pressed: #F7F7F7;
      --edge-light-grey-rest: #EFEFEF;
      --edge-primary-text-color: var(--edge-black);
      --edge-secondary-text-color: var(--edge-text-grey-rest);
      --edge-text-blue-hover: #0070C6;
      --edge-text-blue-rest: #0061AB;
      --edge-text-blue-pressed: #1081D7;
      --edge-text-grey-rest: #6F6F6F;
      --edge-white: #FFFFFF;
      --edge-primary-button-focus-shadow: 0 0 0 2px inset #F2F8FD;
      --edge-focus-outline: 2px solid var(--edge-focus-color);
      background: var(--edge-background);
      color: var(--edge-primary-text-color);
      word-wrap: break-word;
    }

    .nav-wrapper .secondary-button {
      background: var(--secondary-button-fill-color);
      border: 1px solid var(--secondary-button-border-color);
      color: var(--secondary-button-text-color);
      float: none;
      margin: 0;
      padding: 8px 16px;
    }

    .hidden {
      display: none;
    }

    html {
      -webkit-text-size-adjust: 100%;
      font-size: 125%;
    }

    .icon {
      background-repeat: no-repeat;
      background-size: 100%;
    }

    @media (prefers-color-scheme: dark) {
      body {
        --background-color: var(--google-gray-900);
        --error-code-color: var(--google-gray-500);
        --heading-color: var(--google-gray-500);
        --link-color: var(--google-blue-300);
        --primary-button-fill-color-active: rgb(129, 162, 208);
        --primary-button-fill-color: var(--google-blue-300);
        --primary-button-text-color: var(--google-gray-900);
        --quiet-background-color: var(--background-color);
        --secondary-button-border-color: var(--google-gray-700);
        --secondary-button-fill-color: var(--google-gray-900);
        --secondary-button-hover-fill-color: rgb(48, 51, 57);
        --secondary-button-text-color: var(--google-blue-300);
        --small-link-color: var(--google-blue-300);
        --text-color: var(--google-gray-500);
        --edge-black: #FFFFFF;
        --edge-focus-color: #888;
        --edge-blue-hover: #0070C6;
        --edge-blue-pressed: #0069B9;
        --edge-blue-rest: #0078D4;
        --edge-blue-selected: #63ACE5;
        --edge-border-hover: #909090;
        --edge-border-pressed: #787878;
        --edge-border-rest: #575757;
        --edge-grey-background: #2D2D2D;
        --edge-grey-selected: #676767;
        --edge-light-grey-hover: #424242;
        --edge-light-grey-pressed: #3E3E3E;
        --edge-light-grey-rest: #464646;
        --edge-text-blue-hover: #429BDF;
        --edge-text-blue-rest: #63ACE5;
        --edge-text-blue-pressed: #2189DA;
        --edge-text-grey-rest: #949494;
        --edge-white: #1D1D1D;
        --edge-primary-button-focus-shadow: 0 0 0 2px inset #F2F8FD;
      }
    }
  </style>
  <style>
    /* Copyright 2014 The Chromium Authors. All rights reserved.
   Copyright (C) Microsoft Corporation. All rights reserved.
   Use of this source code is governed by a BSD-style license that can be
   found in the LICENSE file. */

    button {
      border: 0;
      border-radius: 2px;
      box-sizing: border-box;
      color: var(--primary-button-text-color);
      cursor: pointer;
      float: right;
      font-size: .875em;
      margin: 0;
      padding: 8px 16px;
      transition: box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1);
      user-select: none;
    }

    [dir='rtl'] button {
      float: left;
    }

    .bad-clock button,
    .captive-portal button,
    .insecure-form button,
    .lookalike-url button,
    .main-frame-blocked button,
    .neterror button,
    .offline button,
    .pdf button,
    .ssl button,
    .safe-browsing-billing button {
      background: var(--edge-blue-rest);
    }

    .bad-clock a,
    .captive-portal a,
    .ssl a {
      color: var(--edge-text-blue-rest);
      text-decoration: none;
      border-bottom: 1px solid currentColor;
    }

    @media (forced-colors: active) {

      .bad-clock a,
      .captive-portal a,
      .lookalike-url a,
      .ssl a {
        -ms-high-contrast-adjust: none;
        color: LinkText;
        border-bottom: 1px solid currentColor;
      }

      .bad-clock a:focus,
      .captive-portal a:focus,
      .lookalike-url a:focus,
      .ssl a:focus {
        outline: none;
        border-bottom: 2px solid LinkText;
      }
    }


    .bad-clock #primary-button,
    .captive-portal #primary-button,
    .lookalike-url #primary-button,
    .ssl #primary-button {
      color: white;
      background-color: var(--edge-blue-rest);
      border: 2px solid var(--edge-blue-rest);
      font-family: system-ui, sans-serif;
      font-weight: 600;
      outline: none;
    }

    .bad-clock #primary-button:focus,
    .captive-portal #primary-button:focus,
    .lookalike-url #primary-button:focus,
    .ssl #primary-button:focus {
      border-color: var(--edge-focus-color);
      box-shadow: var(--edge-primary-button-focus-shadow);
    }

    .bad-clock #primary-button:hover,
    .captive-portal #primary-button:hover,
    .lookalike-url #primary-button:hover,
    .ssl #primary-button:hover {
      background-color: var(--edge-blue-hover);
      border-color: var(--edge-blue-hover);
    }

    .bad-clock #primary-button:active,
    .captive-portal #primary-button:active,
    .lookalike-url #primary-button:active,
    .ssl #primary-button:active {
      background-color: var(--edge-blue-pressed);
      box-shadow: 0 1px 2px 0 rgba(60, 64, 67, .3),
        0 2px 6px 2px rgba(60, 64, 67, .15);
    }

    @media(forced-colors: active) {

      /* Accent button */
      .bad-clock #primary-button,
      .captive-portal #primary-button,
      .lookalike-url #primary-button,
      .ssl #primary-button {
        -ms-high-contrast-adjust: none;
        background-color: Highlight;
        color: HighlightText;
        border: 2px solid transparent;
      }

      .bad-clock #primary-button:focus,
      .captive-portal #primary-button:focus,
      .lookalike-url #primary-button:focus,
      .ssl #primary-button:focus {
        outline: 2px solid ButtonText;
        border-color: transparent;
        box-shadow: none;
      }

      .bad-clock #primary-button:hover,
      .captive-portal #primary-button:hover,
      .lookalike-url #primary-button:hover,
      .ssl #primary-button:hover {
        background-color: HighlightText;
        color: Highlight;
        border: 2px solid Highlight;
      }
    }

    .bad-clock #details-button,
    .captive-portal #details-button,
    .lookalike-url #proceed-button,
    .ssl #details-button {
      color: var(--edge-primary-text-color);
      background-color: transparent;
      border-color: var(--edge-border-rest);
    }

    .bad-clock #details-button:focus,
    .captive-portal #details-button:focus,
    .lookalike-url #proceed-button:focus,
    .ssl #details-button:focus {
      outline: var(--edge-focus-outline);
    }

    .bad-clock #details-button:active,
    .captive-portal #details-button:active,
    .lookalike-url #proceed-button:active,
    .ssl #details-button:active {
      border-color: white;
      background: var(--edge-light-grey-pressed);
      box-shadow: 0 1px 2px 0 rgba(60, 64, 67, .3),
        0 2px 6px 2px rgba(60, 64, 67, .15);
    }

    .bad-clock #details-button:hover,
    .captive-portal #details-button:hover,
    .lookalike-url #proceed-button:hover,
    .ssl #details-button:hover {
      background: var(--edge-light-grey-hover);
      border-color: var(--edge-border-hover);
      text-decoration: none;
    }

    @media(forced-colors: active) {

      /* Outline button */
      .bad-clock #details-button,
      .captive-portal #details-button,
      .lookalike-url #proceed-button,
      .ssl #details-button {
        -ms-high-contrast-adjust: none;
        background-color: ButtonFace;
        color: ButtonText;
        border: 1px solid ButtonText;
      }

      .bad-clock #details-button:focus,
      .captive-portal #details-button:focus,
      .lookalike-url #proceed-button:focus,
      .ssl #details-button:focus {
        outline: 2px solid ButtonText;
      }

      .bad-clock #details-button:hover,
      .captive-portal #details-button:hover,
      .lookalike-url #proceed-button:hover,
      .ssl #details-button:hover {
        background-color: Highlight;
        color: HighlightText;
      }
    }

    .bad-clock #main-message>p,
    .captive-portal #main-message>p,
    .lookalike-url #main-message>p,
    .ssl #main-message>p {
      font-size: 14px;
      line-height: 20px;
      color: var(--edge-primary-text-color);
    }

    button:active {
      background: var(--primary-button-fill-color-active);
      outline: 0;
    }

    #debugging {
      display: inline;
      overflow: auto;
    }

    .debugging-content {
      line-height: 1em;
      margin-bottom: 0;
      margin-top: 1em;
    }

    .debugging-content-fixed-width {
      display: block;
      font-family: monospace;
      font-size: 1.2em;
      margin-top: 0.5em;
    }

    .debugging-title {
      font-weight: bold;
    }

    #details {
      margin: 0 0 50px;
    }

    #details p:not(:first-of-type) {
      margin-top: 20px;
    }

    .secondary-button:active {
      border-color: white;
      box-shadow: 0 1px 2px 0 rgba(60, 64, 67, .3),
        0 2px 6px 2px rgba(60, 64, 67, .15);
    }

    .secondary-button:hover {
      background: var(--secondary-button-hover-fill-color);
      border-color: var(--secondary-button-hover-border-color);
      text-decoration: none;
    }

    .error-code {
      color: var(--error-code-color);
      font-size: .86667em;
      text-transform: uppercase;
      margin-top: 12px;
    }

    #error-debugging-info {
      font-size: 0.8em;
    }

    h1 {
      color: var(--edge-primary-text-color);
      font-size: 1.6em;
      font-weight: bold;
      line-height: 1.25em;
      margin-bottom: 16px;
    }

    h2 {
      font-size: 1.2em;
      font-weight: normal;
    }

    .icon {
      height: 72px;
      margin: 0 0 40px;
      width: 72px;
    }

    input[type=checkbox] {
      opacity: 0;
    }

    input[type=checkbox]:focus~.checkbox:after {
      outline: -webkit-focus-ring-color auto 5px;
    }

    .interstitial-wrapper {
      box-sizing: border-box;
      font-size: 1em;
      line-height: 1.6em;
      margin: 14vh auto 0;
      max-width: 600px;
      width: 100%;
    }

    #main-message>p {
      display: inline;
    }

    #extended-reporting-opt-in {
      font-size: .875em;
      margin-top: 32px;
    }

    #extended-reporting-opt-in label {
      display: grid;
      grid-template-columns: 1.8em 1fr;
      position: relative;
    }

    #enhanced-protection-message {
      border-radius: 4px;
      font-size: 1em;
      margin-top: 32px;
      padding: 10px 5px;
    }

    #enhanced-protection-message label {
      display: grid;
      grid-template-columns: 2.5em 1fr;
      position: relative;
    }

    #enhanced-protection-message div {
      margin: 0.5em;
    }

    #enhanced-protection-message .icon {
      height: 1.5em;
      vertical-align: middle;
      width: 1.5em;
    }

    #https-upgrades-message {
      border-radius: 4px;
      font-size: 1em;
    }

    .nav-wrapper {
      margin-top: 51px;
    }

    .nav-wrapper::after {
      clear: both;
      content: '';
      display: table;
      width: 100%;
    }

    .small-link {
      color: var(--small-link-color);
      font-size: .875em;
    }

    .checkboxes {
      flex: 0 0 24px;
    }

    .checkbox {
      --padding: .9em;
      background: transparent;
      display: block;
      height: 1em;
      left: -1em;
      padding-inline-start: var(--padding);
      position: absolute;
      right: 0;
      top: -.5em;
      width: 1em;
    }

    .checkbox::after {
      border: 1px solid white;
      border-radius: 2px;
      content: '';
      height: 1em;
      position: absolute;
      top: var(--padding);
      left: var(--padding);
      width: 1em;
    }

    .checkbox::before {
      background: transparent;
      border: 2px solid white;
      border-right-width: 0;
      border-top-width: 0;
      content: '';
      height: .2em;
      left: calc(.3em + var(--padding));
      opacity: 0;
      position: absolute;
      top: calc(.3em + var(--padding));
      transform: rotate(-45deg);
      width: .5em;
    }

    input[type=checkbox]:checked~.checkbox::before {
      opacity: 1;
    }

    #recurrent-error-message {
      background: var(--edge-light-grey-rest);
      border-radius: 4px;
      padding: 12px 16px;
      margin-top: 12px;
      margin-bottom: 16px;
    }

    .showing-recurrent-error-message #extended-reporting-opt-in {
      margin-top: 16px;
    }

    .showing-recurrent-error-message #enhanced-protection-message {
      margin-top: 16px;
    }

    @media (max-width: 700px) {
      .interstitial-wrapper {
        padding: 0 10%;
      }

      #error-debugging-info {
        overflow: auto;
      }
    }

    @media (max-width: 420px) {

      button,
      [dir='rtl'] button,
      .small-link {
        float: none;
        font-size: .825em;
        font-weight: 500;
        margin: 0;
        width: 100%;
      }

      button {
        padding: 16px 24px;
      }

      #details {
        margin: 20px 0 20px 0;
      }

      #details p:not(:first-of-type) {
        margin-top: 10px;
      }

      .secondary-button:not(.hidden) {
        display: block;
        margin-top: 20px;
        text-align: center;
        width: 100%;
      }

      .interstitial-wrapper {
        padding: 0 5%;
      }

      #extended-reporting-opt-in {
        margin-top: 24px;
      }

      #enhanced-protection-message {
        margin-top: 24px;
      }

      .nav-wrapper {
        margin-top: 30px;
      }
    }

    /**
 * Mobile specific styling.
 * Navigation buttons are anchored to the bottom of the screen.
 * Details message replaces the top content in its own scrollable area.
 */

    @media (max-width: 420px) {
      .nav-wrapper .secondary-button {
        border: 0;
        margin: 16px 0 0;
        margin-inline-end: 0;
        padding-bottom: 16px;
        padding-top: 16px;
      }
    }

    /* Fixed nav. */
    @media (min-width: 240px) and (max-width: 420px) and (min-height: 401px),
    (min-width: 421px) and (min-height: 240px) and (max-height: 560px) {
      body .nav-wrapper {
        background: var(--edge-grey-background);
        bottom: 0;
        box-shadow: 0 -22px 40px var(--edge-grey-background);
        left: 0;
        margin: 0 auto;
        max-width: 736px;
        padding-left: 24px;
        padding-right: 24px;
        position: fixed;
        right: 0;
        width: 100%;
        z-index: 2;
      }

      .interstitial-wrapper {
        max-width: 736px;
      }

      #details,
      #main-content {
        padding-bottom: 40px;
      }

      #details {
        padding-top: 5.5vh;
      }

      button.small-link {
        color: var(--google-blue-600);
      }
    }

    @media (max-width: 420px) and (orientation: portrait),
    (max-height: 560px) {
      body {
        margin: 0 auto;
      }

      button,
      #details-button,
      [dir='rtl'] button,
      button.small-link {
        font-size: .933em;
        margin: 6px 0;
        transform: translatez(0);
      }

      .nav-wrapper {
        box-sizing: border-box;
        padding-bottom: 8px;
        width: 100%;
      }

      #details {
        box-sizing: border-box;
        height: auto;
        margin: 0;
        opacity: 1;
        transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1);
      }

      #details.hidden,
      #main-content.hidden {
        height: 0;
        opacity: 0;
        overflow: hidden;
        padding-bottom: 0;
        transition: none;
      }

      h1 {
        font-size: 1.5em;
        margin-bottom: 8px;
      }

      .icon {
        margin-bottom: 5.69vh;
      }

      .interstitial-wrapper {
        box-sizing: border-box;
        margin: 7vh auto 12px;
        padding: 0 24px;
        position: relative;
      }

      .interstitial-wrapper p {
        font-size: .95em;
        line-height: 1.61em;
        margin-top: 8px;
      }

      #main-content {
        margin: 0;
        transition: opacity 100ms cubic-bezier(0.4, 0, 0.2, 1);
      }

      .small-link {
        border: 0;
      }

      .suggested-left>#control-buttons,
      .suggested-right>#control-buttons {
        float: none;
        margin: 0;
      }
    }

    @media (min-width: 421px) and (min-height: 500px) and (max-height: 560px) {
      .interstitial-wrapper {
        margin-top: 10vh;
      }
    }

    @media (min-height: 400px) and (orientation:portrait) {
      .interstitial-wrapper {
        margin-bottom: 145px;
      }
    }

    @media (min-height: 299px) {
      .nav-wrapper {
        padding-bottom: 16px;
      }
    }

    @media (max-height: 560px) and (min-height: 240px) and (orientation:landscape) {
      .extended-reporting-has-checkbox #details {
        padding-bottom: 80px;
      }
    }

    @media (min-height: 500px) and (max-height: 650px) and (max-width: 414px) and (orientation: portrait) {
      .interstitial-wrapper {
        margin-top: 7vh;
      }
    }

    @media (min-height: 650px) and (max-width: 414px) and (orientation: portrait) {
      .interstitial-wrapper {
        margin-top: 10vh;
      }
    }

    /* Small mobile screens. No fixed nav. */
    @media (max-height: 400px) and (orientation: portrait),
    (max-height: 239px) and (orientation: landscape),
    (max-width: 419px) and (max-height: 399px) {
      .interstitial-wrapper {
        display: flex;
        flex-direction: column;
        margin-bottom: 0;
      }

      #details {
        flex: 1 1 auto;
        order: 0;
      }

      #main-content {
        flex: 1 1 auto;
        order: 0;
      }

      .nav-wrapper {
        flex: 0 1 auto;
        margin-top: 8px;
        order: 1;
        padding-left: 0;
        padding-right: 0;
        position: relative;
        width: 100%;
      }

      button,
      .nav-wrapper .secondary-button {
        padding: 16px 24px;
      }

      button.small-link {
        color: var(--google-blue-600);
      }
    }

    @media (max-width: 239px) and (orientation: portrait) {
      .nav-wrapper {
        padding-left: 0;
        padding-right: 0;
      }
    }
  </style>
  <style>
    /* Copyright 2013 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file. */

    /* Don't use the main frame div when the error is in a subframe. */
    body {
      background-color: var(--edge-grey-background);
    }

    html[subframe] #main-frame-error {
      display: none;
    }

    /* Don't use the subframe error div when the error is in a main frame. */
    html:not([subframe]) #sub-frame-error {
      display: none;
    }

    #diagnose-button {
      float: none;
      margin-bottom: 10px;
      margin-inline-start: 0;
      margin-top: 20px;
    }

    h1 {
      margin-top: 0;
      word-wrap: break-word;
      color: var(--edge-primary-text-color);
      margin-bottom: 22px;
    }

    h1 span {
      font-weight: bold;
      font-size: 24px;
      line-height: 32px;
    }

    h2 {
      color: var(--edge-secondary-text-color);
      font-size: 1.2em;
      font-weight: normal;
      margin: 10px 0;
    }

    a {
      color: var(--edge-text-blue-rest);
      text-decoration: none;
      border-bottom: 1px solid currentColor;
    }

    a:hover {
      color: var(--edge-text-blue-hover);
    }

    a:focus {
      outline: none;
      text-decoration: none;
      border-bottom: var(--edge-focus-outline);
    }

    #game-buttons {
      display: flex;
      align-items: center;
    }

    #game-message {
      margin-inline-end: 16px;
    }

    #game-button {
      color: var(--edge-primary-text-color);
      background-color: transparent;
      border: 1px solid var(--edge-border-rest);
    }

    #game-button:disabled {
      opacity: 0.3;
      cursor: not-allowed;
    }

    #game-button:hover:not(:disabled) {
      background-color: var(--edge-light-grey-hover);
      border-color: var(--edge-border-hover);
    }

    #game-button:active:not(:disabled) {
      border-color: white;
      background: var(--edge-light-grey-pressed);
      box-shadow: 0 1px 2px 0 rgba(60, 64, 67, .3),
        0 2px 6px 2px rgba(60, 64, 67, .15);
    }

    #game-button:focus:not(:disabled) {
      outline: var(--edge-focus-outline);
    }

    @media (forced-colors: active) {
      a:hover {
        color: HightlightText;
      }
    }

    .icon {
      -webkit-user-select: none;
      display: inline-block;
    }

    .icon-generic {
      /**
   * Can't access edge://theme/IDR_ERROR_NETWORK_GENERIC from an untrusted
   * renderer process, so embed the resource manually.
   */
      content: -webkit-image-set(url() 1x,
          url() 2x);
    }

    .icon-offline {
      content: -webkit-image-set(url() 1x,
          url() 2x);
      position: relative;
    }

    .icon-page-error {
      content: url();
    }

    .icon-thinking {
      content: url();
    }

    .icon-blocked {
      content: url();
    }

    .icon-disconnected {
      content: url();
    }

    .icon-find {
      content: url();
    }

    .icon-insecure-site {
      content: url();
    }

    .icon-page-briefcase {
      content: url();
    }

    .icon-disabled {
      content: -webkit-image-set(url() 1x,
          url() 2x);
      width: 112px;
    }

    .managed-icon {
      content: url();
      margin-inline-end: 6px;
      height: 16px;
      width: 16px;
    }

    .error-code {
      display: block;
      font-size: 10px;
      line-height: 12px;
      color: var(--edge-secondary-text-color);
      margin-top: 24px;
      font-weight: 500;
    }

    #content-top {
      margin: 20px;
    }

    .hidden {
      display: none;
    }

    #suggestion {
      margin-top: 15px;
    }

    #suggestions-list p {
      margin-block-end: 0;
      color: var(--edge-primary-text-color);
      font-weight: 700;
    }

    #suggestions-list ul {
      margin-top: 0;
      color: var(--edge-primary-text-color);
      padding-inline-start: 0;
      list-style: none;
    }

    #suggestions-list li {
      margin-top: 12px;
      font-size: 14px;
      line-height: 20px;
    }

    #suggestions-list li:before {
      content: "•";
      font-size: 14px;
      padding-right: 1em;
    }

    .single-suggestion li:before {
      display: none;
    }

    #short-suggestion {
      margin-top: 5px;
    }

    #error-information-button {
      content: url();
      height: 24px;
      vertical-align: -.15em;
      width: 24px;
    }

    .use-popup-container#error-information-popup-container #error-information-popup {
      align-items: center;
      background-color: var(--edge-grey-background);
      display: flex;
      height: 100%;
      left: 0;
      position: fixed;
      top: 0;
      width: 100%;
      z-index: 100;
    }

    .use-popup-container#error-information-popup-container #error-information-popup-content>p {
      margin-bottom: 11px;
      margin-inline-start: 20px;
    }

    .use-popup-container#error-information-popup-container #suggestions-list ul {
      margin-inline-start: 15px;
    }

    .use-popup-container#error-information-popup-container #error-information-popup-box {
      background-color: var(--edge-white);
      left: 5%;
      padding-bottom: 15px;
      padding-top: 15px;
      position: fixed;
      width: 90%;
      z-index: 101;
    }

    .use-popup-container#error-information-popup-container div.error-code {
      margin-inline-start: 20px;
    }

    .use-popup-container#error-information-popup-container #suggestions-list p {
      margin-inline-start: 20px;
    }

    :not(.use-popup-container)#error-information-popup-container #error-information-popup-close {
      display: none;
    }

    #error-information-popup-close {
      margin-bottom: 0px;
      margin-inline-end: 35px;
      margin-top: 15px;
      text-align: end;
    }

    .link-button {
      color: var(--edge-text-blue-rest);
      display: inline-block;
      font-weight: bold;
      text-transform: uppercase;
    }

    #sub-frame-error-details {
      color: var(--edge-secondary-text-color);

    }

    [jscontent=hostName],
    [jscontent=failedUrl] {
      overflow-wrap: break-word;
    }

    #search-container {
      /* Prevents a space between controls. */
      display: flex;
      margin-top: 20px;
    }

    .snackbar {
      background: #323232;
      border-radius: 2px;
      bottom: 24px;
      box-sizing: border-box;
      color: #fff;
      font-size: .87em;
      left: 24px;
      max-width: 568px;
      min-width: 288px;
      opacity: 0;
      padding: 16px 24px 12px;
      position: fixed;
      transform: translateY(90px);
      will-change: opacity, transform;
      z-index: 999;
    }

    .snackbar-show {
      -webkit-animation:
        show-snackbar .25s cubic-bezier(0.0, 0.0, 0.2, 1) forwards,
        hide-snackbar .25s cubic-bezier(0.4, 0.0, 1, 1) forwards 5s;
    }

    @-webkit-keyframes show-snackbar {
      100% {
        opacity: 1;
        transform: translateY(0);
      }
    }

    @-webkit-keyframes hide-snackbar {
      0% {
        opacity: 1;
        transform: translateY(0);
      }

      100% {
        opacity: 0;
        transform: translateY(90px);
      }
    }

    .suggestions {
      margin-top: 18px;
      color: var(--edge-primary-text-color);
      font-size: 14px;
      line-height: 20px;
    }

    .suggestion-header {
      font-weight: bold;
      margin-bottom: 4px;
    }

    /* Decrease padding at low sizes. */
    @media (max-width: 640px),
    (max-height: 640px) {
      h1 {
        margin: 0 0 15px;
      }

      #content-top {
        margin: 15px;
      }

      .suggestions {
        margin-top: 10px;
      }

      .suggestion-header {
        margin-bottom: 0;
      }
    }

    #download-link,
    #download-link-clicked {
      margin-bottom: 30px;
      margin-top: 30px;
    }

    #download-link-clicked {
      color: #BBB;
    }

    #download-link:before,
    #download-link-clicked:before {
      content: url();
      display: inline-block;
      margin-inline-end: 4px;
      vertical-align: -webkit-baseline-middle;
    }

    #download-link-clicked:before {
      width: 0px;
      opacity: 0;
    }

    .offline-content-list-title {
      color: rgb(95, 99, 104);
      font-size: .8em;
      line-height: 1;
      margin-bottom: .8em;
    }

    #offline-content-suggestions {
      margin-inline-start: -5%;
      width: 110%;
    }

    /* The selectors below adjust the "overflow" of the suggestion cards contents
 * based on the same screen size based strategy used for the main frame, which
 * is applied by the `interstitial-wrapper` class. */
    @media (max-width: 700px) {
      #offline-content-suggestions {
        margin-inline-start: -5%;
        width: 110%;
      }
    }

    @media (max-width: 420px) {
      #offline-content-suggestions {
        margin-inline-start: -2.5%;
        width: 105%;
      }
    }

    @media (max-width: 420px) and (orientation: portrait),
    (max-height: 560px) {
      #offline-content-suggestions {
        margin-inline-start: -12px;
        width: calc(100% + 24px);
      }
    }

    .suggestion-with-image .offline-content-suggestion-visual {
      flex-basis: 8.2em;
      flex-shrink: 0;
    }

    .suggestion-with-image .offline-content-suggestion-visual>img {
      height: 100%;
      width: 100%;
    }

    #offline-content-list:not(.is-rtl) .suggestion-with-image .offline-content-suggestion-visual>img {
      border-bottom-right-radius: 8px;
      border-top-right-radius: 8px;
    }

    #offline-content-list.is-rtl .suggestion-with-image .offline-content-suggestion-visual>img {
      border-bottom-left-radius: 8px;
      border-top-left-radius: 8px;
    }

    .suggestion-with-icon .offline-content-suggestion-visual {
      align-items: center;
      display: flex;
      justify-content: center;
      min-height: 4.2em;
      min-width: 4.2em;
    }

    .suggestion-with-icon .offline-content-suggestion-visual>div {
      align-items: center;
      background-color: rgb(241, 243, 244);
      border-radius: 50%;
      display: flex;
      height: 2.3em;
      justify-content: center;
      width: 2.3em;
    }

    .suggestion-with-icon .offline-content-suggestion-visual>div>img {
      height: 1.45em;
      width: 1.45em;
    }

    .offline-content-suggestion-texts {
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      line-height: 1.3;
      padding: .9em;
      width: 100%;
    }

    .offline-content-suggestion-title {
      -webkit-box-orient: vertical;
      -webkit-line-clamp: 3;
      color: rgb(32, 33, 36);
      display: -webkit-box;
      font-size: 1.1em;
      overflow: hidden;
      text-overflow: ellipsis;
    }

    div.offline-content-suggestion {
      align-items: stretch;
      border-color: rgb(218, 220, 224);
      border-radius: 8px;
      border-style: solid;
      border-width: 1px;
      display: flex;
      justify-content: space-between;
      margin-bottom: .8em;
    }

    .suggestion-with-image {
      flex-direction: row;
      height: 8.2em;
      max-height: 8.2em;
    }

    .suggestion-with-icon {
      flex-direction: row-reverse;
      height: 4.2em;
      max-height: 4.2em;
    }

    .suggestion-with-icon .offline-content-suggestion-title {
      -webkit-line-clamp: 1;
      word-break: break-all;
    }

    .suggestion-with-icon .offline-content-suggestion-texts {
      padding-inline-start: 0px;
    }

    .offline-content-suggestion-attribution-freshness {
      color: rgb(95, 99, 104);
      display: flex;
      font-size: .8em;
    }

    .offline-content-suggestion-attribution {
      -webkit-box-orient: vertical;
      -webkit-line-clamp: 1;
      display: -webkit-box;
      flex-shrink: 1;
      overflow-wrap: break-word;
      overflow: hidden;
      text-overflow: ellipsis;
      word-break: break-all;
    }

    .no-attribution .offline-content-suggestion-attribution {
      display: none;
    }

    .offline-content-suggestion-freshness:before {
      content: '-';
      display: inline-block;
      flex-shrink: 0;
      margin-inline-end: .1em;
      margin-inline-start: .1em;
    }

    .no-attribution .offline-content-suggestion-freshness:before {
      display: none;
    }

    .offline-content-suggestion-freshness {
      flex-shrink: 0;
    }

    .suggestion-with-image .offline-content-suggestion-pin-spacer {
      flex-shrink: 1;
      flex-grow: 100;
    }

    .suggestion-with-image .offline-content-suggestion-pin {
      content: url();
      flex-shrink: 0;
      height: 1.4em;
      margin-inline-start: .4em;
      width: 1.4em;
    }

    .offline-content-list-action {
      text-align: center;
    }

    #offline-content-summary {
      border-color: rgb(241, 243, 244);
      border-radius: 12px;
      border-style: solid;
      border-width: 1px;
      padding: 12px;
      text-align: center;
    }

    .offline-content-summary-image-truncate {
      width: 45px;
    }

    .offline-content-summary-images {
      direction: ltr;
      display: flex;
      margin-top: 10px;
      justify-content: center;
      padding-bottom: 12px;
    }

    .offline-content-summary-images img {
      background: rgb(241, 243, 244);
      border-radius: 50%;
      box-shadow:
        0px 1px 2px 0px rgb(155, 155, 155),
        0px 1px 3px 0px rgb(155, 155, 155);
      padding: 12px;
      width: 32px;
    }

    .offline-content-summary-description {
      border-top: 1px solid rgb(241, 243, 244);
      padding-top: 12px;
    }

    .offline-content-summary-action {
      padding-top: 12px;
    }

    /* Don't allow overflow when in a subframe. */
    html[subframe] body {
      overflow: hidden;
    }

    #sub-frame-error {
      -webkit-align-items: center;
      background-color: #DDD;
      display: -webkit-flex;
      -webkit-flex-flow: column;
      height: 100%;
      -webkit-justify-content: center;
      left: 0;
      position: absolute;
      text-align: center;
      top: 0;
      transition: background-color .2s ease-in-out;
      width: 100%;
    }

    #sub-frame-error:hover {
      background-color: #EEE;
    }

    #sub-frame-error .icon-generic {
      margin: 0 0 16px;
    }

    #sub-frame-error-details {
      margin: 0 10px;
      text-align: center;

    }

    /* Show details only when hovering. */
    #sub-frame-error:hover #sub-frame-error-details {
      visibility: visible;
    }

    /* If the iframe is too small, always hide the error code. */
    /* TODO(mmenke): See if overflow: no-display works better, once supported. */
    @media (max-width: 200px),
    (max-height: 95px) {
      #sub-frame-error-details {
        display: none;
      }
    }

    /* Adjust icon for small embedded frames in apps. */
    @media (max-height: 100px) {
      #sub-frame-error .icon-generic {
        height: auto;
        margin: 0;
        padding-top: 0;
        width: 25px;
      }
    }

    #control-buttons {
      margin-bottom: 44px;
    }

    /* details-button is special; it's a <button> element that looks like a link. */
    #details-buttons {
      width: 100%;
    }

    #details-button {
      box-shadow: none;
      min-width: 0;
      background: none;
      border: none;
      color: var(--edge-primary-text-color);
      cursor: pointer;
      font-size: 14px;
      line-height: 20px;
      text-decoration: none;
      float: left;
      padding: 4px;
      font-family: system-ui, sans-serif;
    }

    #details-button:before {
      display: inline-block;
      content: "";
      background-image: url("");
      margin-right: 10px;
      width: 14px;
      height: 10px;
      background-repeat: no-repeat;
      background-position: center center;
      fill: var(--edge-primary-text-color);
    }

    #details-button.expanded:before {
      transform: rotate(180deg);
    }

    #details-button:focus {
      outline: solid 2px var(--edge-focus-color);
    }

    @media (forced-colors: active) {

      #details-button,
      #game-button {
        -ms-high-contrast-adjust: none;
        color: ButtonText;
        background-color: ButtonFace;
      }

      #game-button {
        /* extra border for this button only */
        border: 1px solid ButtonText;
      }

      #details-button::before,
      #game-button::before {
        fill: ButtonText;
      }

      #details-button:focus,
      #game-button:focus {
        outline: 2px solid ButtonText;
      }

      #details-button:hover,
      #game-button:hover {
        background-color: Highlight;
        color: HighlightText;
      }

      #details-button:hover::before,
      #game-button:hover::before {
        fill: HighlightText;
      }
    }

    .nav-wrapper {
      margin-top: 44px;
    }

    #control-buttons,
    #stale-load-button,
    #details-buttons {
      float: left !important;
    }

    .suggested-left .secondary-button {
      margin-inline-end: 0px;
    }

    #details-button.singular {
      float: none;
    }

    /* download-button shows both icon and text. */
    #download-button {
      padding-bottom: 4px;
      padding-top: 4px;
      position: relative;
    }

    #download-button:before {
      background: -webkit-image-set(url() 1x,
          url() 2x) no-repeat;
      content: '';
      display: inline-block;
      width: 24px;
      height: 24px;
      margin-inline-end: 4px;
      margin-inline-start: -4px;
      vertical-align: middle;
    }

    #download-button:disabled {
      background: rgb(180, 206, 249);
      color: rgb(255, 255, 255);
    }

    /*
TODO(https://crbug.com/852872): UI for offline suggested content is incomplete.
*/
    .suggested-thumbnail {
      width: 25vw;
      height: 25vw;
    }

    #reload-button {
      background-color: var(--edge-blue-rest);
      color: white;
      /* always white because it is a blue button */
      border-radius: 2px;
      width: 100px;
      height: 32px;
      font-family: system-ui, sans-serif;
      font-weight: 600;
      font-size: 12px;
      padding: 0;
      outline: none;
    }

    #reload-button:focus {
      outline: var(--edge-focus-outline);
      box-shadow: var(--edge-primary-button-focus-shadow);
    }

    #reload-button:hover {
      background-color: var(--edge-blue-hover);
    }

    #reload-button:active {
      background-color: var(--edge-blue-pressed);
    }

    @media (forced-colors: active) {

      /* Acts like an accent button */
      #reload-button {
        -ms-high-contrast-adjust: none;
        background-color: Highlight;
        color: HighlightText;
      }

      #reload-button:hover {
        background-color: HighlightText;
        color: Highlight;
        border: 2px solid Highlight;
      }

      #reload-button:focus {
        outline: 2px solid ButtonText;
        box-shadow: none;
      }
    }

    /* Offline page */
    .offline {
      transition: -webkit-filter 1.5s cubic-bezier(0.65, 0.05, 0.36, 1),
        background-color 1.5s cubic-bezier(0.65, 0.05, 0.36, 1);
      will-change: -webkit-filter, background-color;
    }

    #main-message>p {
      font-size: 14px;
      line-height: 20px;
      color: var(--edge-primary-text-color);
    }

    .offline #main-message>p {
      display: none;
    }

    .offline.inverted {
      -webkit-filter: invert(100%);
      background-color: var(--edge-black);
    }

    .offline .interstitial-wrapper {
      color: #2b2b2b;
      font-size: 1em;
      line-height: 1.55;
      margin: 0 auto;
      max-width: 600px;
      padding-top: 100px;
      width: 100%;
    }

    .offline .controller {
      background: rgba(247, 247, 247, .1);
      height: 100vh;
      left: 0;
      position: absolute;
      top: 0;
      width: 100vw;
      z-index: 9;
    }

    #offline-resources {
      display: none;
    }

    @media (max-width: 420px) {
      #download-button {
        padding-bottom: 12px;
        padding-top: 12px;
      }

      .snackbar {
        left: 0;
        bottom: 0;
        width: 100%;
        border-radius: 0;
      }
    }

    @media (max-height: 350px) {
      h1 {
        margin: 0 0 15px;
      }

      .icon-offline {
        margin: 0 0 10px;
      }

      .interstitial-wrapper {
        margin-top: 5%;
      }

      .nav-wrapper {
        margin-top: 30px;
      }
    }

    @media (min-width: 420px) and (max-width: 736px) and (min-height: 240px) and (max-height: 420px) and (orientation:landscape) {
      .interstitial-wrapper {
        margin-bottom: 100px;
      }
    }

    @media (max-width: 360px) and (max-height: 480px) {
      .offline .interstitial-wrapper {
        padding-top: 60px;
      }

    }

    @media (min-height: 240px) and (orientation: landscape) {
      .offline .interstitial-wrapper {
        margin-bottom: 90px;
      }

      .icon-offline {
        margin-bottom: 20px;
      }
    }

    @media (max-height: 320px) and (orientation: landscape) {
      .icon-offline {
        margin-bottom: 0;
      }

    }

    @media (max-width: 240px) {
      button {
        padding-left: 12px;
        padding-right: 12px;
      }

      .interstitial-wrapper {
        overflow: inherit;
        padding: 0 8px;
      }
    }

    @media (max-width: 120px) {
      button {
        width: auto;
      }
    }


    @media (prefers-color-scheme: dark) {

      .icon,
      .managed-icon {
        filter: invert(1);
      }

      #details-button:before {
        filter: invert(1);
      }
    }
  </style>
  <script>// Copyright 2017 The Chromium Authors. All rights reserved.
    // Copyright (C) Microsoft Corporation. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.

    // This is the shared code for security interstitials. It is used for both SSL
    // interstitials and Safe Browsing interstitials.

    /**
     * @typedef {{
     *   dontProceed: function(),
     *   proceed: function(),
     *   showMoreSection: function(),
     *   openHelpCenter: function(),
     *   openDiagnostic: function(),
     *   reload: function(),
     *   openDateSettings: function(),
     *   openLogin: function(),
     *   doReport: function(),
     *   dontReport: function(),
     *   openReportingPrivacy: function(),
     *   openWhitepaper: function(),
     *   reportPhishingError: function(),
     * }}
     */
    // eslint-disable-next-line no-var
    var certificateErrorPageController;

    // Should match security_interstitials::SecurityInterstitialCommand
    /** @enum {number} */
    const SecurityInterstitialCommandId = {
      // For SmartScreen only
      CMD_INTERSTITIAL_PAGE_LOADED: -32,
      CMD_MCAS_SUPPORT_PAGE: -31,

      CMD_DONT_PROCEED: 0,
      CMD_PROCEED: 1,
      // Ways for user to get more information
      CMD_SHOW_MORE_SECTION: 2,
      CMD_OPEN_HELP_CENTER: 3,
      CMD_OPEN_DIAGNOSTIC: 4,
      // Primary button actions
      CMD_RELOAD: 5,
      CMD_OPEN_DATE_SETTINGS: 6,
      CMD_OPEN_LOGIN: 7,
      // Safe Browsing Extended Reporting
      CMD_DO_REPORT: 8,
      CMD_DONT_REPORT: 9,
      CMD_OPEN_REPORTING_PRIVACY: 10,
      CMD_OPEN_WHITEPAPER: 11,
      // Report a phishing error.
      CMD_REPORT_PHISHING_ERROR: 12,
      // Open enhanced protection settings.
      CMD_OPEN_ENHANCED_PROTECTION_SETTINGS: 13,

      // Edge specific commands are to be offset by 1000
      // Open Edge privacy settings.
      CMD_OPEN_EDGE_PRIVACY_SETTINGS: 1000,
    };

    const HIDDEN_CLASS = 'hidden';

    /**
     * A convenience method for sending commands to the parent page.
     * @param {SecurityInterstitialCommandId} cmd  The command to send.
     */
    function sendCommand(cmd) {
      if (window.certificateErrorPageController) {
        switch (cmd) {
          case SecurityInterstitialCommandId.CMD_DONT_PROCEED:
            certificateErrorPageController.dontProceed();
            break;
          case SecurityInterstitialCommandId.CMD_PROCEED:
            certificateErrorPageController.proceed();
            break;
          case SecurityInterstitialCommandId.CMD_SHOW_MORE_SECTION:
            certificateErrorPageController.showMoreSection();
            break;
          case SecurityInterstitialCommandId.CMD_OPEN_HELP_CENTER:
            certificateErrorPageController.openHelpCenter();
            break;
          case SecurityInterstitialCommandId.CMD_OPEN_DIAGNOSTIC:
            certificateErrorPageController.openDiagnostic();
            break;
          case SecurityInterstitialCommandId.CMD_RELOAD:
            certificateErrorPageController.reload();
            break;
          case SecurityInterstitialCommandId.CMD_OPEN_DATE_SETTINGS:
            certificateErrorPageController.openDateSettings();
            break;
          case SecurityInterstitialCommandId.CMD_OPEN_LOGIN:
            certificateErrorPageController.openLogin();
            break;
          case SecurityInterstitialCommandId.CMD_DO_REPORT:
            certificateErrorPageController.doReport();
            break;
          case SecurityInterstitialCommandId.CMD_DONT_REPORT:
            certificateErrorPageController.dontReport();
            break;
          case SecurityInterstitialCommandId.CMD_OPEN_REPORTING_PRIVACY:
            certificateErrorPageController.openReportingPrivacy();
            break;
          case SecurityInterstitialCommandId.CMD_OPEN_WHITEPAPER:
            certificateErrorPageController.openWhitepaper();
            break;
          case SecurityInterstitialCommandId.CMD_REPORT_PHISHING_ERROR:
            certificateErrorPageController.reportPhishingError();
            break;
          case SecurityInterstitialCommandId.CMD_INTERSTITIAL_PAGE_LOADED:
            certificateErrorPageController.interstitialLoaded();
            break;
          case SecurityInterstitialCommandId.CMD_MCAS_SUPPORT_PAGE:
            certificateErrorPageController.mcasSupportPage();
            break;
          case SecurityInterstitialCommandId.CMD_OPEN_ENHANCED_PROTECTION_SETTINGS:
            certificateErrorPageController.openEnhancedProtectionSettings();
            break;
          case SecurityInterstitialCommandId.CMD_OPEN_EDGE_PRIVACY_SETTINGS:
            certificateErrorPageController.openEdgePrivacySettings();
            break;
        }
        return;
      }
      // 
      window.domAutomationController.send(cmd);
      // 
      // 
    }

    /**
     * Call this to stop clicks on <a href="#"> links from scrolling to the top of
     * the page (and possibly showing a # in the link).
     */
    function preventDefaultOnPoundLinkClicks() {
      document.addEventListener('click', function (e) {
        const anchor = findAncestor(/** @type {Node} */(e.target), function (el) {
          return el.tagName === 'A';
        });
        // Use getAttribute() to prevent URL normalization.
        if (anchor && anchor.getAttribute('href') === '#') {
          e.preventDefault();
        }
      });
    }

// 

// 
  </script>
  <script>// Copyright 2015 The Chromium Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.

    let mobileNav = false;

    /**
     * For small screen mobile the navigation buttons are moved
     * below the advanced text.
     */
    function onResize() {
      const helpOuterBox = document.querySelector('#details');
      const mainContent = document.querySelector('#main-content');
      const mediaQuery = '(min-width: 240px) and (max-width: 420px) and ' +
        '(min-height: 401px), ' +
        '(max-height: 560px) and (min-height: 240px) and ' +
        '(min-width: 421px)';

      const detailsHidden = helpOuterBox.classList.contains(HIDDEN_CLASS);
      const runnerContainer = document.querySelector('.runner-container');

      // Check for change in nav status.
      if (mobileNav !== window.matchMedia(mediaQuery).matches) {
        mobileNav = !mobileNav;

        // Handle showing the top content / details sections according to state.
        if (mobileNav) {
          mainContent.classList.toggle(HIDDEN_CLASS, !detailsHidden);
          helpOuterBox.classList.toggle(HIDDEN_CLASS, detailsHidden);
          if (runnerContainer) {
            runnerContainer.classList.toggle(HIDDEN_CLASS, !detailsHidden);
          }
        } else if (!detailsHidden) {
          // Non mobile nav with visible details.
          mainContent.classList.remove(HIDDEN_CLASS);
          helpOuterBox.classList.remove(HIDDEN_CLASS);
          if (runnerContainer) {
            runnerContainer.classList.remove(HIDDEN_CLASS);
          }
        }
      }
    }

    function setupMobileNav() {
      window.addEventListener('resize', onResize);
      onResize();
    }

    document.addEventListener('DOMContentLoaded', setupMobileNav);
  </script>
  <script>// Copyright 2013 The Chromium Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.

    function toggleHelpBox() {
      const helpBoxOuter = document.getElementById('details');
      helpBoxOuter.classList.toggle(HIDDEN_CLASS);
      const detailsButton = document.getElementById('details-button');
      if (helpBoxOuter.classList.contains(HIDDEN_CLASS)) {
        detailsButton.innerText = detailsButton.detailsText;
        detailsButton.classList.remove("expanded");
      } else {
        detailsButton.innerText = detailsButton.hideDetailsText;
        detailsButton.classList.add("expanded");
      }

      // Details appears over the main content on small screens.
      if (mobileNav) {
        document.getElementById('main-content').classList.toggle(HIDDEN_CLASS);
        const runnerContainer = document.querySelector('.runner-container');
        if (runnerContainer) {
          runnerContainer.classList.toggle(HIDDEN_CLASS);
        }
      }
    }

    function diagnoseErrors() {
      // 
      if (window.errorPageController) {
        errorPageController.diagnoseErrorsButtonClick();
      }
      // 
      // 
    }

    // Subframes use a different layout but the same html file.  This is to make it
    // easier to support platforms that load the error page via different
    // mechanisms (Currently just iOS). We also use the subframe style for portals
    // as they are embedded like subframes and can't be interacted with by the user.
    if (window.top.location != window.location || window.portalHost) {
      document.documentElement.setAttribute('subframe', '');
    }

    // Re-renders the error page using |strings| as the dictionary of values.
    // Used by NetErrorTabHelper to update DNS error pages with probe results.
    function updateForDnsProbe(strings) {
      const context = new JsEvalContext(strings);
      jstProcess(context, document.getElementById('t'));
    }

    // Given the classList property of an element, adds an icon class to the list
    // and removes the previously-
    function updateIconClass(classList, newClass) {
      let oldClass;

      if (classList.hasOwnProperty('last_icon_class')) {
        oldClass = classList['last_icon_class'];
        if (oldClass == newClass) {
          return;
        }
      }

      classList.add(newClass);
      if (oldClass !== undefined) {
        classList.remove(oldClass);
      }

      classList['last_icon_class'] = newClass;

      document.body.classList.add('neterror');
    }

    // Does a search using |baseSearchUrl| and the text in the search box.
    function search(baseSearchUrl) {
      const searchTextNode = document.getElementById('search-box');
      document.location = baseSearchUrl + searchTextNode.value;
      return false;
    }

    // Implements button clicks.  This function is needed during the transition
    // between implementing these in trunk chromium and implementing them in
    // iOS.
    function reloadButtonClick(url) {
      if (window.errorPageController) {
        errorPageController.reloadButtonClick();
      } else {
        location = url;
      }
    }

    function showSavedCopyButtonClick() {
      if (window.errorPageController) {
        errorPageController.showSavedCopyButtonClick();
      }
    }

    function downloadButtonClick() {
      if (window.errorPageController) {
        errorPageController.downloadButtonClick();
        const downloadButton = document.getElementById('download-button');
        downloadButton.disabled = true;
        downloadButton.textContent = downloadButton.disabledText;

        document.getElementById('download-link-wrapper')
          .classList.add(HIDDEN_CLASS);
        document.getElementById('download-link-clicked-wrapper')
          .classList.remove(HIDDEN_CLASS);
      }
    }

    function detailsButtonClick() {
      if (window.errorPageController) {
        errorPageController.detailsButtonClick();
      }
    }

    let primaryControlOnLeft = true;
    // 

    // TODO(crbug.com/883486): UI not yet implemented.
    function setAutoFetchState(scheduled, can_schedule) {
    }

    function toggleErrorInformationPopup() {
      document.getElementById('error-information-popup-container')
        .classList.toggle(HIDDEN_CLASS);
    }

    function launchOfflineItem(itemID, name_space) {
      errorPageController.launchOfflineItem(itemID, name_space);
    }

    function launchDownloadsPage() {
      errorPageController.launchDownloadsPage();
    }

    // Populates a summary of suggested offline content.
    function offlineContentSummaryAvailable(summary) {
      // Note: See AvailableContentSummaryToValue in
      // available_offline_content_helper.cc for the data contained in |summary|.
      if (!summary || summary.total_items == 0 ||
        !loadTimeData.valueExists('offlineContentSummary')) {
        return;
      }
      // TODO(https://crbug.com/852872): Customize presented icons based on the
      // types of available offline content.
      document.getElementById('offline-content-summary').hidden = false;
    }

    function getIconForSuggestedItem(item) {
      // Note: |item.content_type| contains the enum values from
      // chrome::mojom::AvailableContentType.
      switch (item.content_type) {
        case 1:  // kVideo
          return 'image-video';
        case 2:  // kAudio
          return 'image-music-note';
        case 0:  // kPrefetchedPage
        case 3:  // kOtherPage
          return 'image-earth';
      }
      return 'image-file';
    }

    function getSuggestedContentDiv(item, index) {
      // Note: See AvailableContentToValue in available_offline_content_helper.cc
      // for the data contained in an |item|.
      // TODO(carlosk): Present |snippet_base64| when that content becomes
      // available.
      let visual = '';
      const extraContainerClasses = [];
      // html_inline.py will try to replace src attributes with data URIs using a
      // simple regex. The following is obfuscated slightly to avoid that.
      const src = 'src';
      if (item.thumbnail_data_uri) {
        extraContainerClasses.push('suggestion-with-image');
        visual = `<img ${src}="${item.thumbnail_data_uri}">`;
      } else {
        extraContainerClasses.push('suggestion-with-icon');
        iconClass = getIconForSuggestedItem(item);
        visual = `<div><img class="${iconClass}"></div>`;
      }

      if (!item.attribution_base64) {
        extraContainerClasses.push('no-attribution');
      }

      return `
  <div class="offline-content-suggestion ${extraContainerClasses.join(' ')}"
    onclick="launchOfflineItem('${item.ID}', '${item.name_space}')">
      <div class="offline-content-suggestion-texts">
        <div id="offline-content-suggestion-title-${index}"
             class="offline-content-suggestion-title">
        </div>
        <div class="offline-content-suggestion-attribution-freshness">
          <div id="offline-content-suggestion-attribution-${index}"
               class="offline-content-suggestion-attribution">
          </div>
          <div class="offline-content-suggestion-freshness">
            ${item.date_modified}
          </div>
          <div class="offline-content-suggestion-pin-spacer"></div>
          <div class="offline-content-suggestion-pin"></div>
        </div>
      </div>
      <div class="offline-content-suggestion-visual">
        ${visual}
      </div>
  </div>`;
    }

    // Populates a list of suggested offline content.
    // Note: For security reasons all content downloaded from the web is considered
    // unsafe and must be securely handled to be presented on the dino page. Images
    // have already been safely re-encoded but textual content -- like title and
    // attribution -- must be properly handled here.
    function offlineContentAvailable(suggestions) {
      if (!suggestions || !loadTimeData.valueExists('offlineContentList')) {
        return;
      }

      const suggestionsHTML = [];
      for (let index = 0; index < suggestions.length; index++) {
        suggestionsHTML.push(getSuggestedContentDiv(suggestions[index], index));
      }

      document.getElementById('offline-content-suggestions').innerHTML =
        suggestionsHTML.join('\n');

      // Sets textual web content using |textContent| to make sure it's handled as
      // plain text.
      for (let index = 0; index < suggestions.length; index++) {
        document.getElementById(`offline-content-suggestion-title-${index}`)
          .textContent = atob(suggestions[index].title_base64);
        document.getElementById(`offline-content-suggestion-attribution-${index}`)
          .textContent = atob(suggestions[index].attribution_base64);
      }

      const contentListElement = document.getElementById('offline-content-list');
      if (document.dir == 'rtl') {
        contentListElement.classList.add('is-rtl');
      }
      contentListElement.hidden = false;
    }

    function onDocumentLoad() {
      const controlButtonDiv = document.getElementById('control-buttons');
      const reloadButton = document.getElementById('reload-button');
      const detailsButton = document.getElementById('details-button');
      const showSavedCopyButton = document.getElementById('show-saved-copy-button');
      const downloadButton = document.getElementById('download-button');
      const gameButton = document.getElementById('game-button');
      const gameButtonContainer = document.getElementById('game-buttons');

      const reloadButtonVisible = loadTimeData.valueExists('reloadButton') &&
        loadTimeData.getValue('reloadButton').msg;
      const showSavedCopyButtonVisible =
        loadTimeData.valueExists('showSavedCopyButton') &&
        loadTimeData.getValue('showSavedCopyButton').msg;
      const downloadButtonVisible =
        loadTimeData.valueExists('downloadButton') &&
        loadTimeData.getValue('downloadButton').msg;
      const gameButtonDisabled =
        loadTimeData.valueExists('disabledGame') &&
        loadTimeData.getBoolean('disabledGame');

      if (gameButtonDisabled) {
        gameButton.disabled = true;
        const managedIcon = gameButtonContainer.getElementsByClassName('managed-icon')[0];
        if (!!managedIcon && loadTimeData.valueExists('playGameMsg')) {
          managedIcon.setAttribute('title', loadTimeData.getString('disabledGameMsg'));
        }
      }

      // If Automatic HTTPS suggestions are defined, show messages.
      const automaticHTTPSVisible =
        loadTimeData.valueExists('httpsUpgradesMessage');
      if (automaticHTTPSVisible) {
        document.getElementById('https-upgrades-message')
          .classList.toggle(HIDDEN_CLASS);
        document.getElementById('https-upgrades-message-details')
          .classList.toggle(HIDDEN_CLASS);
      }

      // If offline content suggestions will be visible, the usual buttons will not
      // be presented.
      const offlineContentVisible =
        loadTimeData.valueExists('suggestedOfflineContentPresentationMode');
      if (offlineContentVisible) {
        document.querySelector('.nav-wrapper').classList.add(HIDDEN_CLASS);
        detailsButton.classList.add(HIDDEN_CLASS);

        if (downloadButtonVisible) {
          document.getElementById('download-link').hidden = false;
        }

        document.getElementById('download-links-wrapper')
          .classList.remove(HIDDEN_CLASS);
        document.getElementById('error-information-popup-container')
          .classList.add('use-popup-container', HIDDEN_CLASS);
        document.getElementById('error-information-button')
          .classList.remove(HIDDEN_CLASS);

        return;
      }

      let primaryButton, secondaryButton;
      if (showSavedCopyButton.primary) {
        primaryButton = showSavedCopyButton;
        secondaryButton = reloadButton;
      } else {
        primaryButton = reloadButton;
        secondaryButton = showSavedCopyButton;
      }

      // Sets up the proper button layout for the current platform.
      if (primaryControlOnLeft) {
        buttons.classList.add('suggested-left');
        controlButtonDiv.insertBefore(secondaryButton, primaryButton);
      } else {
        buttons.classList.add('suggested-right');
        controlButtonDiv.insertBefore(primaryButton, secondaryButton);
      }

      if (reloadButton.style.display == 'none' &&
        showSavedCopyButton.style.display == 'none' &&
        downloadButton.style.display == 'none') {
        detailsButton.classList.add('singular');
      }

      // Show control buttons.
      if (reloadButtonVisible || showSavedCopyButtonVisible ||
        downloadButtonVisible) {
        controlButtonDiv.hidden = false;

        // Set the secondary button state in the cases of two call to actions.
        if ((reloadButtonVisible || downloadButtonVisible) &&
          showSavedCopyButtonVisible) {
          secondaryButton.classList.add('secondary-button');
        }
      }
    }

    function launchGame() {
      const gameButtonDisabled =
        loadTimeData.valueExists('disabledGame') &&
        loadTimeData.getBoolean('disabledGame');
      if (!gameButtonDisabled) {
        errorPageController.openSurfGame();
      }
    }

    // Opens edge://settings/privacy.
    function launchEdgePrivacySettings() {
      errorPageController.openEdgePrivacySettings();
    }

    // Updates https_upgrade_state from
    // third_party/blink/public/mojom/renderer_preferences.mojom to
    // edge_https::UpgradeState::UPGRADE_FAILURE_IGNORED if Edge's
    // Automatic HTTPS component needs to be bypassed.
    function updateHttpsUpgradeState() {
      errorPageController.bypassEdgeHttpsUpgrades();
    }

    document.addEventListener('DOMContentLoaded', onDocumentLoad);
  </script>
</head>



</html>